#pragma once

#include "FSM.h"
#include "TimeRoute.h"
#include "Movement.h"

class BaseEntity
{
public:
	BaseEntity(CFSM_T<CState>& rFSMControl):m_rFSMControl(rFSMControl)
	{
	}
	~BaseEntity(){}
	void DeafultMove()
	{
	}
	void Response(IEvent& rEvent)
	{
		m_rFSMControl.Response(rEvent);
	}
	void Heartbeat(float fTime){GetMovement().Heartbeat(fTime);};
	CMovementEX& GetMovement(){return m_Movement;};
	CState* GetState(){m_rFSMControl.CurrentStatePtr();};
	CFSM_T<CState>& GetControl(){return m_rFSMControl;};
	CMovementEX m_Movement;
	CFSM_T<CState>& m_rFSMControl;
};